using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using QuizArena;
using xWinFormsLib;
using Microsoft.Xna.Framework.Content;
using System.IO;
using Microsoft.Xna.Framework.Input;
using System.Threading;
using pds2.XArena;


namespace QuizArena
{
    class TelaParaForms : Tela
    {

        ContentManager conteudo;

        Texture2D imagemDeFundo;
        List<Icone> icones;

        FormCollection forms;

        public enum FormType
        {
            Temas,
            Assuntos,
            Perguntas,
            ServidorDePerguntas,
        }

        public TelaParaForms(FormType tipo)
        {
            Boolean houveModificacaoNoDominio = true;

            DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory);
            FileInfo[] rgFiles = di.GetFiles("*.xml");
            int qntArquivosXml = rgFiles.Length;

            if (qntArquivosXml == 0 || houveModificacaoNoDominio)
            {
                XMLUtils.ReiniciarArquivosXML();
            }

            TempoDeAparecimentoDaTela = TimeSpan.FromSeconds(2);
            TempoDeDesaparecimentoDaTela = TimeSpan.FromSeconds(1);

            forms = new FormCollection();

            Form formularioUnico = new Form(new Vector2(200, 200), new Vector2(400, 300), "Background", Color.PowderBlue, Color.DarkBlue, ConteinerAuxiliar.fontePadrao, 1f, true, true, true, true, Form.BorderStyle.FixedSingle, Form.Style.Default, imagemDeFundo, this);

            if (tipo == FormType.Temas)
            {
                formularioUnico = new TemasForm(this);
            }
            else if (tipo == FormType.Assuntos)
            {
                formularioUnico = new AssuntosForm(this);
            }
            else if (tipo == FormType.Perguntas)
            {
                formularioUnico = new QuestoesForm(this);
            }
            else if (tipo == FormType.ServidorDePerguntas)
            {
                formularioUnico = new ServidoresForm(this);
            }

            forms.Add(formularioUnico);

            formularioUnico.Show();
            formularioUnico.SetFocus();
        }

        public override void LoadContent()
        {
            if (conteudo == null)
                conteudo = new ContentManager(GerenciadorDeTelas.Game.Services, "Content");

            imagemDeFundo = conteudo.Load<Texture2D>("Ball");

            icones = new List<Icone>();

            Icone icone;

            for (int i = 0; i < forms.Count; i++)
            {
                icone = new Icone();
                icone.Imagem = imagemDeFundo;
                icone.Retangulo = new Rectangle(i * 60 + 10, 10, 50, 50);
                
                icones.Add(icone);
            }

            base.LoadContent();
        }

        #region Update e Draw

        public override void Update(GameTime tempoDeJogo, bool focoEmOutraTela,
                                                       bool cobertaPorOutraTela)
        {
            base.Update(tempoDeJogo, focoEmOutraTela, cobertaPorOutraTela);

            forms.Update();
        }

        public override void Draw(GameTime tempoDeJogo)
        {
            FadeBackgroundToColor(Color.White);

            forms.Draw();

            base.Draw(tempoDeJogo);
        }

        #endregion

    }
}
